/*
 * ModRF.h
 *
 * Created: 20/03/2012 16:19:25
 *  Author: marionse
 */ 


#ifndef MODRF_H_
#define MODRF_H_

#include "custom_type.h"
#include "ModFam.h"


/**
* \brief definit le format des message RF
*/

// taille maximale du buffer
#define EM260_MAX_IN_BUFFER 100

typedef struct  
{
	// info radio
	Int8U em_lnk;		// link quality
	Int8S em_rssi;		// energy level in dbm
	Int16U src_addr;	// address de la source
	
	// message
	SFamMsg msg;
}TRFMsg;

/** adresse broadcast */
#define RF_BRD_ADDR 0xFFFF


/**
* \brief fonction d'initialisation du module
*/
ERetCode ModRFInit( void );

/**
* \brief fonction appelee a chaque passage dans la boucle main
*/
ERetCode ModRFTick( void );

/**
* \brief fonction pour changer de cannal radio
*
* \param[IN] cannal radio souhaiter
*/
ERetCode modRFSetChannel( Int8U i_channel );

/**
* \brief fonction de recuperation d'un message RF
*        si le module retourne success, un message est present dans le buffer
*        si le buffer est NULL, alors le message est perdu
*
* \param[OUT] op_buffer buffer dans lequel sera copier le message recu, si NULL le message est perdu
*/
ERetCode modRFGetMsg( TRFMsg *op_buffer );

/**
* \brief fonction d'envoi d'un message sur la RF
*
* \param[IN] ip_buffer buffer contenant le message
* \param[IN] i_dest_addr addresse de destination du message
*/
ERetCode modRFSendMsg( SFamMsg *ip_buffer, Int16U i_dest_addr );


#endif /* MODRF_H_ */